﻿/*
 * Created by SharpDevelop.
 * User: Home
 * Date: 10/05/2008
 * Time: 13:12
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */

using System;
using System.Data;
using System.Drawing;
using csharp.rad.general;
using System.Windows.Forms;
using csharp.rad.sisponto.kernel;
using ComponentFactory.Krypton.Toolkit;

namespace csharp.rad.sisponto
{
	/// <summary>
	/// Description of frmCadDigitalMaster.
	/// </summary>
	public partial class frmCadDigitalMaster : KryptonForm
	{
		private Database bd;
		private Funcionario func;
		private Funcionarios lstFuncs, lstMasters;
		
		public frmCadDigitalMaster(Database bd)
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			InitializeComponent();
			
			this.bd = bd;
			func = new Funcionario(bd);
			lstFuncs = new Funcionarios(bd);
			lstMasters = new Funcionarios(bd);
		}

		private void preencheComboFunc()
		{
			int tam;
			
			tam = lstFuncs.Items.Count;
			for (int i = 0; i < tam; i++)
				cmbFunc.Items.Add(lstFuncs.Items[i].nome);
		}
		
		private void preencheDataGrid()
		{
			lstMasters.obterMasters();
			string []aux = new String[2];
			
			dgvFunc.Rows.Clear();
			for(int i = 0; i < lstMasters.Items.Count; i++)
			{
				aux[0] = Convert.ToString(lstMasters.Items[i].id);
				aux[1] = lstMasters.Items[i].nome;
				//aux[2] = lstMasters.Items[i].nome;
				
				dgvFunc.Rows.Add(aux);
			}
		}
		
		void FrmCadDigitalMasterLoad(object sender, EventArgs e)
		{
			this.MaximumSize = this.Size;
			this.MinimumSize = this.Size;
			
			lstFuncs.obter();
			preencheComboFunc();
			
			preencheDataGrid();
		}
		
		void BtnAdicionarClick(object sender, EventArgs e)
		{
			int dedo;
			
			if( kernel.Functions.ValidaForm(this))
			{
				if( lstMasters.procuraExata(cmbFunc.Text) >= 0)
				{
					KryptonMessageBox.Show("Esse funcionário já tem uma digital cadastrada como master!");
					return;
				}
				func.id= lstFuncs.Items[cmbFunc.SelectedIndex].id;
				
				if( func.obter() <= 0)
				{
					KryptonMessageBox.Show("Erro, "+func._msg_erro);
					return;
				}
				func.digitais.clear();
				func.digitais.obter();
				
				dedo = Convert.ToInt32(cmbDedo.SelectedIndex);
				if (func.digitais.dedosArmazenados[dedo])
				{
					KryptonMessageBox.Show("A digital desse dedo do funcionário já está cadastrada,\n" +
					                "escolha outro dedo ou exclua a digital no cadastro de funcionários!","Sisponto");
					return;
				}
				if( !kernel.Functions.checkPermission("CADASTRO.FUNCIONARIO.DIGITAL.ADICIONAR",true))
					return;
				frmLeDigital form = new frmLeDigital(ref func.digitais, dedo, true);
				form.ShowDialog();		
			}
			else
				return;
			
			if( func.digitais.dedosArmazenados[dedo])
			{
				//func.digitais.template[dedo,0].master = true;
				//func.digitais.template[dedo,1].master = true;
				//func.digitais.template[dedo,2].master = true;
				//func.digitais.template[dedo,3].master = true;
				
				if( func.gravar() > 0)
				{
					KryptonMessageBox.Show("Digital cadastrada com sucesso!");
					preencheDataGrid();
				}
				else
					KryptonMessageBox.Show("Erro, "+func._msg_erro);
			}
		}
		
		void BtnDeletarClick(object sender, EventArgs e)
		{
			int index = dgvFunc.SelectedRows.Count;
			if( index > 0)
			{
				DialogResult result = KryptonMessageBox.Show("Deseja realmente apagar essas digitais?",
				                                      "Sisponto", 
				                                      MessageBoxButtons.YesNo,
				                                      MessageBoxIcon.Question,				                                      
				                                      MessageBoxDefaultButton.Button2);
				if( result == DialogResult.Yes)
				{
					index = Convert.ToInt32(dgvFunc.CurrentRow.Cells[0].Value);
					if( func.digitais.apagarDigitaisMaster(index) > 0)
					{
						KryptonMessageBox.Show("Digitais apagadas com sucesso!","Sisponto");
						preencheDataGrid();
					}
					else
						KryptonMessageBox.Show("Erro, "+func.digitais._msg_erro,"Sisponto");
				}
			}
			else
				KryptonMessageBox.Show("Selecione um funcionário!",
				                "Sisponto", 
				                MessageBoxButtons.OK,
				                MessageBoxIcon.Exclamation);
		}
	}
}
